/* 由 ecpg 处理（回归模式） */
/* 这些包含文件由预处理器添加 */
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* 需要用于 informix 兼容性 */
#include <ecpg_informix.h>
/* 自动包含部分结束 */
#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))

#line 1 "rfmtlong.pgc"
#include <stdio.h>
#include <stdlib.h>
#include <pgtypes_error.h>
#include <sqltypes.h>

/*
 * 该文件通过 rfmtlong 测试各种长输入/输出的形式
 */


static void fc_check_return(int fc_ret);

static void fc_fmtlong(long fc_lng, const char *fc_fmt)
{
	static int fc_i;
	int fc_r;
	char fc_buf[30];

	fc_r = rfmtlong(fc_lng, fc_fmt, fc_buf);
	printf("r: %d ", fc_r);
	if (fc_r == 0)
	{
		printf("%d: %s (fmt was: %s)\n", fc_i++, fc_buf, fc_fmt);
	}
	else
		fc_check_return(fc_r);
}

int main(void)
{
	ECPGdebug(1, stderr);

	fc_fmtlong(-8494493, "-<<<<,<<<,<<<,<<<");
	fc_fmtlong(-8494493, "################");
	fc_fmtlong(-8494493, "+++$$$$$$$$$$$$$.##");
	fc_fmtlong(-8494493, "(&,&&&,&&&,&&&.)");
	fc_fmtlong(-8494493, "<<<<,<<<,<<<,<<<");
	fc_fmtlong(-8494493, "$************.**");
	fc_fmtlong(-8494493, "---$************.**");
	fc_fmtlong(-8494493, "+-+################");
	fc_fmtlong(-8494493, "abc: ################+-+");
	fc_fmtlong(-8494493, "+<<<<,<<<,<<<,<<<");

	return 0;
}

static void fc_check_return(int fc_ret)
{
	switch(fc_ret)
	{
		case ECPG_INFORMIX_ENOTDMY:
			printf("(ECPG_INFORMIX_ENOTDMY)");
			break;
		case ECPG_INFORMIX_ENOSHORTDATE:
			printf("(ECPG_INFORMIX_ENOSHORTDATE)");
			break;
		case ECPG_INFORMIX_BAD_DAY:
			printf("(ECPG_INFORMIX_BAD_DAY)");
			break;
		case ECPG_INFORMIX_BAD_MONTH:
			printf("(ECPG_INFORMIX_BAD_MONTH)");
			break;
		default:
			printf("(unknown ret: %d)", fc_ret);
			break;
	}
	printf("\n");
}
